#include "list.h"

int main(int argc, char *argv[])
{
    int fdserver;
    LIST *usrinfo = creatlist();  //创建一个结点，用于接收用户的信息
    usrinfo->next = NULL;
    char buff[512] = {0};

    if(argc < 2)    //判断输入格式是否符合要求
    {
        printf("not input client username\n");
        exit(1);
    }   
    if(strlen(argv[1]) > 20)   //若客户端的名字超过20个自己，则不符合
    {
        printf("username is to long, 20 Bytes\n");
        exit(1);
    }   
    if((fdserver = open(PUBLICFIFO, O_WRONLY)) < 0) //打开管道文件
        perror("open fdserver");

    changelist(usrinfo, 1, argv[1], "0", "0");//填写第一次发给系统的信息

    if((write(fdserver, usrinfo, sizeof(LIST))) < 0)  //新登录之后交给服务器管理，加入链表中
        perror("write login information");

    benoblock(STDIN_FILENO);    //把标准输入改为非阻塞属性

    while(1) 
    {
        //给服务器发信息
        if(commclient(usrinfo, fdserver))
            printf("Invalid input!\n");
        sleep(1);
        if(usrinfo->id == 3)   //如果是退出包，用户退出，关闭公共管道的文件描述符
        {   
            close(fdserver);
            printf("already quit\n");
            return 0;
        }
        readclient(argv[1]);  //处理自身管道中的数据
    }
    return 0;
}